<?xml version="1.0" encoding="utf-8"?>
<!--
                                                                                     
 h       t     t                ::       /     /                     t             / 
 h       t     t                ::      //    //                     t            // 
 h     ttttt ttttt ppppp sssss         //    //  y   y       sssss ttttt         //  
 hhhh    t     t   p   p s            //    //   y   y       s       t          //   
 h  hh   t     t   ppppp sssss       //    //    yyyyy       sssss   t         //    
 h   h   t     t   p         s  ::   /     /         y  ..       s   t    ..   /     
 h   h   t     t   p     sssss  ::   /     /     yyyyy  ..   sssss   t    ..   /     
                                                                                     
	<https://y.st./>
	Copyright © 2017 Alex Yst <mailto:copyright@y.st>

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program. If not, see <https://www.gnu.org./licenses/>.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<base href="https://y.st./en/coursework/CS2301/" />
		<title>Learning Journal &lt;https://y.st./en/coursework/CS2301/&gt;</title>
		<link rel="icon" type="image/png" href="/link/CC_BY-SA_4.0/y.st./icon.png" />
		<link rel="stylesheet" type="text/css" href="/link/basic.css" />
		<link rel="stylesheet" type="text/css" href="/link/site-specific.css" />
		<script type="text/javascript" src="/script/javascript.js" />
		<meta name="viewport" content="width=device-width" />
	</head>
	<body>
		<nav>
			<p>
				<a href="/en/">Home</a> |
				<a href="/en/a/about.xhtml">About</a> |
				<a href="/en/a/contact.xhtml">Contact</a> |
				<a href="/a/canary.txt">Canary</a> |
				<a href="/en/URI_research/"><abbr title="Uniform Resource Identifier">URI</abbr> research</a> |
				<a href="/en/opinion/">Opinions</a> |
				<a href="/en/coursework/">Coursework</a> |
				<a href="/en/law/">Law</a> |
				<a href="/en/a/links.xhtml">Links</a> |
				<a href="/en/coursework/CS2301/index.xhtml.asc">{this page}.asc</a>
			</p>
			<hr/>
			<p>
				<a href="/en/coursework/BUS1101/" title="Principles of Business Management">BUS 1101</a> |
				<span class="hyperlink_unavailable" title="Basic Accounting">BUS 1102</span> |
				<span class="hyperlink_unavailable" title="Principles of Marketing">BUS 2201</span> |
				<span class="hyperlink_unavailable" title="Multinational Management">BUS 2207</span> |
				<span class="hyperlink_unavailable" title="Business and Society">BUS 3306</span> |
				<a href="/en/coursework/CS1101/" title="Programming Fundamentals">CS 1101</a> |
				<a href="/en/coursework/CS1102/" title="Programming 1">CS 1102</a> |
				<a href="/en/coursework/CS1103/" title="Programming 2">CS 1103</a> |
				<span class="hyperlink_unavailable" title="Computer Systems">CS 1104</span> |
				<a href="/en/coursework/CS2203/" title="Databases 1">CS 2203</a> |
				<span class="hyperlink_unavailable" title="Communications and Networking">CS 2204</span> |
				<a href="/en/coursework/CS2205/" title="Web Programming 1">CS 2205</a> |
				<a href="/en/coursework/CS2301/" title="Operating Systems 1">CS 2301</a> |
				<span class="hyperlink_unavailable" title="Software Engineering 1">CS 2401</span> |
				<span class="hyperlink_unavailable" title="Data Structures">CS 3303</span> |
				<span class="hyperlink_unavailable" title="Analysis of Algorithms">CS 3304</span> |
				<span class="hyperlink_unavailable" title="Web Programming 2">CS 3305</span> |
				<span class="hyperlink_unavailable" title="Databases 2">CS 3306</span> |
				<span class="hyperlink_unavailable" title="Operating Systems 2">CS 3307</span> |
				<span class="hyperlink_unavailable" title="Information Retrieval">CS 3308</span> |
				<span class="hyperlink_unavailable" title="Comparative Programming Languages">CS 4402</span> |
				<span class="hyperlink_unavailable" title="Software Engineering 2">CS 4403</span> |
				<span class="hyperlink_unavailable" title="Advanced Networking and Data Security">CS 4404</span> |
				<span class="hyperlink_unavailable" title="Mobile Applications">CS 4405</span> |
				<span class="hyperlink_unavailable" title="Computer Graphics">CS 4406</span> |
				<span class="hyperlink_unavailable" title="Data Mining and Machine Learning">CS 4407</span> |
				<span class="hyperlink_unavailable" title="Artificial Intelligence">CS 4408</span> |
				<span class="hyperlink_unavailable" title="English Composition 2">ENGL 1102</span> |
				<span class="hyperlink_unavailable" title="World Literature">ENGL 1405</span> |
				<span class="hyperlink_unavailable" title="Introduction to Environmental Science">ENVS 1301</span> |
				<a href="/en/coursework/HIST1421/" title="Greek and Roman Civilization">HIST 1421</a> |
				<span class="hyperlink_unavailable" title="College Algebra">MATH 1201</span> |
				<span class="hyperlink_unavailable" title="Calculus">MATH 1211</span> |
				<span class="hyperlink_unavailable" title="Introduction to Statistics">MATH 1280</span> |
				<span class="hyperlink_unavailable" title="Discrete Mathematics">MATH 1302</span> |
				<span class="hyperlink_unavailable" title="Introduction to Philosophy">PHIL 1402</span> |
				<a href="/en/coursework/PHIL1404/" title="Ethics and Social Responsibility">PHIL 1404</a> |
				<a href="/en/coursework/POLS1503/" title="Globalization">POLS 1503</a> |
				<span class="hyperlink_unavailable" title="Introduction to Psychology">PSYC 1504</span> |
				<a href="/en/coursework/UNIV1001/" title="Online Education Strategies">UNIV 1001</a>
			</p>
			<hr/>
			<p>
				
			</p>
			<hr/>
		</nav>
		<header>
			<h1>Learning Journal</h1>
			<p>CS 2301: Operating Systems 1</p>
		</header>
<h2 id="Unit1">Unit 1</h2>
<p>
	Virtualisation is used in all major operating systems.
	The two operating systems I use myself at home are Debian 9 and Replicant 4.2.
	Both of these systems provide a virtual system for applications to interact with, making it so hardware-specific programs need not be written (though different versions still need to be compiled for different processors).
	In the case of Debian, the standard Linux <abbr title="application programming interface">API</abbr> is available to applications.
	Replicant is a fork of a fork of Android (that&apos;s not a typo; it&apos;s a fork of a fork), so all the free parts of the Android <abbr title="application programming interface">API</abbr> are available to work with.
	(In Replicant, the proprietary <abbr title="application programming interface">API</abbr> methods made available by Google Play Services aren&apos;t present because Google Play services, thankfully, isn&apos;t included.)
	Android&apos;s <abbr title="application programming interface">API</abbr> is based on Java, making Java&apos;s standard methods and classes available as well.
	At work, I deal with a third system that will remain unnamed, but it provides the same type of virtualisation for applications to interact with the hardware without needing to know the specifics of that hardware.
	These are the only three operating systems I interact with, so they&apos;re the only places I come in contact with virtualisation, at least directly.
	I don&apos;t have any other electronics (such as televisions, <abbr title="digital versatile disc">DVD</abbr> players, <abbr title="digital video recorder">DVR</abbr>s, et cetera) in my home besides my microwave oven, conventional oven, and refrigerator/freezer, so I don&apos;t have as much virtualisation in my home as most people do.
	Internet-based services also tend to run on machines that use virtualisation, so I likely come into indirect contact with virtualisation on countless Linux-based systems, as well as <abbr title="Berkeley Software Distribution">BSD</abbr> systems, Windows systems, and OS X systems.
	Using this virtualisation, I&apos;m able to run many programs at once.
	I don&apos;t know what all the computer at work runs, but on my laptop, I need to simultaneously run <abbr title="The Onion Router">Tor</abbr>, my basic desktop software, my text editor (I write in my journal and compose all my assignments in <abbr title="Extensible Hypertext Markup Language">XHTML</abbr>), my email client, a Web browser, my file manager, and usually at least two instances of a command line emulator, all at once.
	And that&apos;s my minimal setup, when I&apos;m not doing anything out of the ordinary.
	When I&apos;ve got other things to do, I run additional applications while keeping all my usual stuff running.
	The basic desktop software&apos;s composed of many types of applications as well, which all run at once.
	There&apos;s a lot that needs to happen even with this minimal setup!
</p>
<p>
	My name is Alex Yst, and I&apos;m currently working toward my computer science degree here at University of the People.
	I&apos;m agendered, so I&apos;m both an Alexandra and an Alexander (or neither, if you prefer to think of it that way).
	The main language I prefer to use is <abbr title="PHP: Hypertext Preprocessor">PHP</abbr>, but I&apos;m also fluent in Java, Python, <abbr title="Extensible Markup Language">XML</abbr>, <abbr title="Extensible Hypertext Markup Language">XHTML</abbr>, <abbr title="Cascading Style Sheets">CSS</abbr>, and Lua.
	I dabble in JavaScript, but I try to avoid using it when possible for accessibility reasons.
	I maintain a website, and I keep an <a href="https://y.st./en/coursework/">archive of my past coursework</a>.
	I type in English English (as opposed to United States English), so if you&apos;re in the United States, you&apos;ll likely see a lot of my words use an &quot;s&quot; instead of a &quot;z&quot;, and I spell &quot;colour&quot; with a &quot;u&quot;.
	I thought I had an idea of how memory addresses in <abbr title="random-access memory">RAM</abbr> were used by applications.
	I thought that the operating system assigned a memory address for the application&apos;s use when the application requested it, and if the application tried to access the memory allocated to another application, the operating system would cause the program to segfault.
	In fact, that&apos;s what I thought a segfault was: an error thrown because an application tried to access memory not allocated to that specific program (or program instance, rather).
	However, it seems the <abbr title="random-access memory">RAM</abbr> is virtualised, so there&apos;s no way to even try to access another application instance&apos;s <abbr title="random-access memory">RAM</abbr> addresses.
	So what&apos;s a segfault then?
	I&apos;ll need to look into that when time allows, if it&apos;s not covered by the course material.
	The chapter also showed an example of a multi-threaded application coming up with the wrong solution due to sets of instructions not being treated atomically.
	The problem looks very much like my understanding of race conditions.
	I&apos;m really hoping we cover race conditions and how to properly deal with them in our software.
</p>
		<hr/>
		<p>
			Copyright © 2017 Alex Yst;
			You may modify and/or redistribute this document under the terms of the <a rel="license" href="/license/gpl-3.0-standalone.xhtml"><abbr title="GNU&apos;s Not Unix">GNU</abbr> <abbr title="General Public License version Three or later">GPLv3+</abbr></a>.
			If for some reason you would prefer to modify and/or distribute this document under other free copyleft terms, please ask me via email.
			My address is in the source comments near the top of this document.
			This license also applies to embedded content such as images.
			For more information on that, see <a href="/en/a/licensing.xhtml">licensing</a>.
		</p>
		<p>
			<abbr title="World Wide Web Consortium">W3C</abbr> standards are important.
			This document conforms to the <a href="https://validator.w3.org./nu/?doc=https%3A%2F%2Fy.st.%2Fen%2Fcoursework%2FCS2301%2F"><abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 5.1</a> specification and uses style sheets that conform to the <a href="http://jigsaw.w3.org./css-validator/validator?uri=https%3A%2F%2Fy.st.%2Fen%2Fcoursework%2FCS2301%2F"><abbr title="Cascading Style Sheets">CSS</abbr>3</a> specification.
		</p>
	</body>
</html>

